# 
# Created with PyCharm.
# Description :
# User: jiume
# Date: 2024-09-05
# Time: 15:53
#

# # 元组生成式
# f = (i for i in range(10))
# # 这里的t得到的是一个生成器对象，而不是一个元组。我们需要将对象中的值全部取出来
# t = tuple(f) # 这里t就是一个元组了
# print(f)
# f = tuple(f) # f中的值在前面已经被取出来了，因此这里得到的元组为空
# print(f)
# print(t)

# # 还有另外一种方法将生成器中的元素取出
# f = (i for i in range(3))
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__()) # 代码运行到这里，生成器中已经没有元素了，因此会报错


# # 创建字典
#
# # 1、使用{}创建字典类型
# d = {10:'cat',20:'dog',30:'pet',40:'zoo'}
# 注意：字典的键输出是无序的，只不过在3.6版本之后进行了处理，使其可以输出有序，但本质还是无序的
# print(d)
# # 当键相同时，后插入的数据会将前面的数据进行覆盖
# d = {10:'cat',20:'dog',30:'pet',40:'zoo',10:'我要学编程'}
# print(d)
#
# # 2、使用内置函数zip去创建
# keys = [1,2,3,4,5]
# values = ['a','b','c','d','e','f']
# # 将keys和values中的元素组合成元组，会返回一个可迭代的对象
# zipobj = zip(keys,values) # 只能一 一组合，无论那种多了都会剩余
# # 通过dict函数将可迭代的对象转换为字典
# print(dict(zipobj))
#
# # 3、使用dict函数的参数创建字典
# # 当一侧的值固定为某个数据类型后，之后的同侧的数据类型不可发生改变
# d = dict(cat=10,dog=20) # 左侧是键，右侧是值
# print(d)
#
# # 还可以使用元组去创建字典（列表不行，因为其是可变数据类型）
# t = (1,2,3) # 元组
# print({t:'dog'})
#
# # list = [1,2,3] # 列表
# # print({list:'dog'})


# 因为字典也是序列，因此操作序列的函数也可以操作字典
# 注意：在字典中计算最大值时，默认情况下判断的是字典的键


# # 字典的访问与遍历
#
# # 访问
# d = {'dog':10,'cat':20,'java':30,'python':40}
# print(d['dog'])
# print(d.get('dog'))
# # 注意：上述两种方式有不同之处：当键都不存在时，[]会报错，
# # 而get()会返回一个None（类似Java中的null）
# # 而且我们也可以去指定get()方法返回的默认值
# print(d.get('mysql','不存在')) # 这时会返回 '不存在'
#
# # 遍历
# for item in d.items():
#     print(item) # 会返回键和值组成的元组
# # 如果我们想得到其对应的键和值，就可以用如下方法
# for key,value in d.items():
#     print(key,'-->',value)